//package xf.tools;
//
//
//import android.annotation.TargetApi;
//import android.app.Activity;
//import android.content.Context;
//import android.content.pm.PackageManager;
//import android.os.Build;
//import android.support.v4.content.ContextCompat;
//
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * Created by tangxin on 2017/1/23 16:26.
// */
//public class XPermissionUtils {
//
//    private static int mRequestCode = -1;
//
//    private static OnPermissionListener mOnPermissionListener;
//
//    public interface OnPermissionListener {
//
//        void onPermissionGranted();
//
//        void onPermissionDenied();
//    }
//
//    @TargetApi(Build.VERSION_CODES.M)
//    public static void requestPermissions(Context context, int requestCode
//            , String[] permissions, OnPermissionListener listener) {
//        if (context instanceof Activity) {
//            mOnPermissionListener = listener;
//            List<String> deniedPermissions = getDeniedPermissions(context, permissions);
//            if (deniedPermissions.size() > 0) {
//                mRequestCode = requestCode;
//                ((Activity) context).requestPermissions(deniedPermissions
//                        .toArray(new String[deniedPermissions.size()]), requestCode);
//
//            } else {
//                if (mOnPermissionListener != null)
//                    mOnPermissionListener.onPermissionGranted();
//            }
//        } else {
//            throw new RuntimeException("Context must be an Activity");
//        }
//    }
//
//    /**
//     * 获取请求权限中需要授权的权限
//     */
//    private static List<String> getDeniedPermissions(Context context, String... permissions) {
//        List<String> deniedPermissions = new ArrayList<>();
//        for (String permission : permissions) {
//            if (ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_DENIED) {
//                deniedPermissions.add(permission);
//            }
//        }
//        return deniedPermissions;
//    }
//
//    /**
//     * 请求权限结果，对应Activity中onRequestPermissionsResult()方法。
//     */
//    public static void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
//        if (mRequestCode != -1 && requestCode == mRequestCode) {
//            if (mOnPermissionListener != null) {
//                if (verifyPermissions(grantResults)) {
//                    mOnPermissionListener.onPermissionGranted();
//                } else {
//                    mOnPermissionListener.onPermissionDenied();
//                }
//            }
//        }
//    }
//
//    /**
//     * 验证所有权限是否都已经授权
//     */
//    private static boolean verifyPermissions(int[] grantResults) {
//        for (int grantResult : grantResults) {
//            if (grantResult != PackageManager.PERMISSION_GRANTED) {
//                return false;
//            }
//        }
//        return true;
//    }
//}
